package com.zx.pm.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zx.common.annotation.Excel;
import com.zx.common.core.domain.BaseEntity;

/**
 * 项目基本信息对象 project
 *
 * @author ruoyi
 * @date 2025-09-04
 */
public class Project extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 项目负责人 */
    @Excel(name = "项目负责人")
    private String projectManager;

    /** 项目ID */
    private Long id;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 项目编号 */
    @Excel(name = "项目编号")
    private String projectNo;

    /** 项目类型 */
    @Excel(name = "项目类型")
    private String projectType;

    /** 项目状态：未开始, 已完结 */
    @Excel(name = "项目状态：未开始, 已完结")
    private String status;

    /** 项目描述 */
    @Excel(name = "项目描述")
    private String description;

    /** 创建人ID */
    @Excel(name = "创建人ID")
    private Long createUserId;

    /** 存档状态：0-未存档，1-已存档 */
    @Excel(name = "存档状态：0-未存档，1-已存档")
    private Integer archiveStatus;

    /** 存档时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "存档时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date archiveTime;

    /** 存档原因 */
    @Excel(name = "存档原因")
    private String archiveReason;

    /** 关键词（非持久字段） */
    private String keyword;

    public void setProjectManager(String projectManager)
    {
        this.projectManager = projectManager;
    }

    public String getProjectManager()
    {
        return projectManager;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setProjectName(String projectName)
    {
        this.projectName = projectName;
    }

    public String getProjectName()
    {
        return projectName;
    }

    public void setProjectNo(String projectNo)
    {
        this.projectNo = projectNo;
    }

    public String getProjectNo()
    {
        return projectNo;
    }

    public void setProjectType(String projectType)
    {
        this.projectType = projectType;
    }

    public String getProjectType()
    {
        return projectType;
    }

    public void setStatus(String status)
    {
        this.status = status;
    }

    public String getStatus()
    {
        return status;
    }

    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getDescription()
    {
        return description;
    }

    public void setCreateUserId(Long createUserId)
    {
        this.createUserId = createUserId;
    }

    public Long getCreateUserId()
    {
        return createUserId;
    }

    public void setArchiveStatus(Integer archiveStatus)
    {
        this.archiveStatus = archiveStatus;
    }

    public Integer getArchiveStatus()
    {
        return archiveStatus;
    }

    public void setArchiveTime(Date archiveTime)
    {
        this.archiveTime = archiveTime;
    }

    public Date getArchiveTime()
    {
        return archiveTime;
    }

    public void setArchiveReason(String archiveReason)
    {
        this.archiveReason = archiveReason;
    }

    public String getArchiveReason()
    {
        return archiveReason;
    }

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("projectManager", getProjectManager())
                .append("id", getId())
                .append("projectName", getProjectName())
                .append("projectNo", getProjectNo())
                .append("projectType", getProjectType())
                .append("status", getStatus())
                .append("description", getDescription())
                .append("createUserId", getCreateUserId())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("archiveStatus", getArchiveStatus())
                .append("archiveTime", getArchiveTime())
                .append("archiveReason", getArchiveReason())
                .toString();
    }
}
